home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1998 #1 / Amiga Plus 1998 #1.iso / demo-versionen / haage&partner / warpup-warpos / include / clib / powerpc_protos.h
C/C++ Source or Header  |  1997-09-24  |  16KB  |  507 lines

  1. #ifndef CLIB_POWERPC_PROTOS_H
  2. #define CLIB_POWERPC_PROTOS_H
  3.  
  4. /*
  5. **  $VER: powerpc_protos.h 1.0 (24.9.97)
  6. **  WarpOS Release 1.0
  7. **
  8. **  '(C) Copyright 1997 Haage & Partner Computer GmbH'
  9. **       All Rights Reserved
  10. */
  11.  
  12. #ifndef UTILITY_TAGITEM_H
  13. #include <utility/tagitem.h>
  14. #endif
  15.  
  16. #ifndef DEVICES_TIMER_H
  17. #include <devices/timer.h>
  18. #endif
  19.  
  20. #ifndef __PPC__
  21.  
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25.  
  26. // *** ppc call
  27. ULONG RunPPC(struct PPCArgs *);
  28. ULONG WaitForPPC(struct PPCArgs *);
  29.  
  30. // *** hardware
  31. ULONG GetCPU(VOID);
  32.  
  33. // *** debugging
  34. VOID PowerDebugMode(ULONG);
  35. VOID SPrintF68K(STRPTR,APTR);
  36.  
  37. // *** memory
  38. APTR AllocVec32(ULONG,ULONG);
  39. VOID FreeVec32(APTR);
  40.  
  41. #ifndef POWERPCLIB_V7
  42.  
  43. // *** ports
  44. struct Message *AllocXMsg(ULONG,struct MsgPort);
  45. VOID FreeXMsg(struct Message);
  46. VOID PutXMsg(struct MsgPortPPC, struct Message);
  47.  
  48. #endif // POWERPCLIB_V7
  49.  
  50. #ifdef __cplusplus
  51. };
  52. #endif
  53.  
  54. #else // __PPC__
  55.  
  56. /*
  57. Attention: The names for this PPC functions (all have a suffix "_" 
  58.            are subject to change. As soon as the StormC PPC compiler 
  59.            is able to add the "struct Library *" by default for 
  60.            shared library functions the names will loose the suffix.
  61.  
  62.            Please use the __inline functions from the end of this file.           
  63. */
  64.  
  65. extern "AmigaLib" PowerPCBase {
  66.  
  67.         // *** call 68K
  68.         ULONG Run68K_(struct Library *, struct PPCArgs *) = -300;
  69.         ULONG WaitFor68K_(struct Library *, struct PPCArgs *) = -306;
  70.         
  71.         // *** debugging
  72.         VOID SPrintF_(struct Library *, STRPTR, APTR) = -312;
  73.  
  74.         // *** memory
  75.         APTR AllocVecPPC_(struct Library *, ULONG, ULONG, ULONG) = -324;
  76.         LONG FreeVecPPC_(struct Library *, APTR) = -330;
  77.  
  78.         // *** time measurement
  79.         VOID GetSysTimePPC_(struct Library*, struct timeval *) = -684;
  80.         VOID AddTimePPC_(struct Library*, struct timeval *, struct timeval *) = -690;
  81.         VOID SubTimePPC_(struct Library*, struct timeval *, struct timeval *) = -696;
  82.         LONG CmpTimePPC_(struct Library*, struct timeval *, struct timeval *) = -702;
  83.         
  84. #ifndef POWERPCLIB_V7
  85.         // *** more memory
  86.         VOID FreeAllMem_(struct Library *) = -654;
  87.         VOID CopyMemPPC_(struct Library *, APTR, APTR, ULONG) = -660;
  88.  
  89.         // *** lists
  90.         VOID AddHeadPPC_(struct Library *, struct List *, struct Node *) = -408;
  91.         VOID AddTailPPC_(struct Library *, struct List *, struct Node *) = -414;
  92.         VOID EnqueuePPC_(struct Library *, struct List *, struct Node *) = -438;
  93.         struct Node *FindNamePPC_(struct Library *, struct List *, STRPTR) = -444;
  94.         VOID InsertPPC_(struct Library *, struct Node *, struct Node *) = -402;
  95.         struct Node *RemHeadPPC_(struct Library *, struct List *) = -426;
  96.         VOID RemovePPC_(struct Library *, struct Node *) = -420;
  97.         struct Node *RemTailPPC_(struct Library *, struct Node *) = -432;
  98.         
  99.         // *** semaphores
  100.         VOID AddSemaphorePPC_(struct Library *, struct SignalSemaphorePPC *) = -366;
  101.         LONG AttemptSemaphorePPC_(struct Library *, struct SignalSemaphorePPC *) = -384;
  102.         struct SignalSemaphorePPC *FindSemaphorePPC_(struct Library *, STRPTR) = -396;
  103.         VOID FreeSemaphorePPC_(struct Library *, struct SignalSemaphorePPC *) = -360;
  104.         LONG InitSemaphorePPC_(struct Library *, struct SignalSemaphorePPC *) = -354;
  105.         VOID ObtainSemaphorePPC_(struct Library *, struct SignalSemaphorePPC *) = -378;
  106.         VOID ReleaseSemaphorePPC_(struct Library *, struct SignalSemaphorePPC *) = -390;
  107.         VOID RemSemaphorePPC_(struct Library *, struct SignalSemaphorePPC *) = -372;
  108.         
  109.         // *** signals
  110.         LONG AllocSignalPPC_(struct Library *, LONG) = -468;
  111.         VOID FreeSignalPPC_(struct Library *, LONG) = -474;
  112.         ULONG SetSignalPPC_(struct Library *, ULONG, ULONG) = -480;
  113.         VOID SignalPPC_(struct Library *, struct TaskPPC *, ULONG) = -486;
  114.         ULONG WaitPPC_(struct Library *, ULONG) = -492;
  115.         ULONG WaitTime_(struct Library *, ULONG, ULONG) = -552;
  116.         
  117.         // *** tasks
  118.         struct TaskPPC *CreateTaskPPC_(struct Library *, struct TagItem *) = -336;
  119. //      struct TaskPPC *CreateTaskPPCTags_(struct Library *, Tag tag1, ...) = -336;
  120.         VOID DeleteTaskPPC_(struct Library *, struct TaskPPC *) = -342;
  121.         struct TaskPPC *FindTaskPPC_(struct Library *, STRPTR) = -348;
  122.         struct TaskPtr *LockTaskList_(struct Library *) = -564;
  123.         LONG SetTaskPriPPC_(struct Library *, struct TaskPPC *, LONG) = -498;
  124.         VOID UnLockTaskList_(struct Library *) = -570;
  125.  
  126.         // *** ports
  127.         VOID AddPortPPC_(struct Library *, struct MsgPortPPC *) = -612;
  128.         struct MsgPortPPC *CreateMsgPortPPC_(struct Library *) = -600;
  129.         VOID DeleteMsgPortPPC_(struct Library *, struct MsgPortPPC *) = -606;
  130.         struct MsgPortPPC *FindPortPPC_(struct Library *, STRPTR) = -624;
  131.         struct Message *GetMsgPPC_(struct Library *, struct MsgPortPPC *) = -642;
  132.         VOID PutMsgPPC_(struct Library *, struct MsgPortPPC *, struct Message *) = -636;
  133.         VOID RemPortPPC_(struct Library *, struct MsgPortPPC *) = -618;
  134.         VOID ReplyMsgPPC_(struct Library *, struct Message *) = -648;
  135.         struct Message *AllocXMsgPPC(struct Library *, ULONG, struct MsgPortPPC);
  136.         VOID FreeXMsgPPC(struct Library *, struct Message);
  137.         VOID PutXMsgPPC(struct Library *, struct MsgPort, struct Message);
  138.  
  139.         // *** tag items
  140.         struct TagItem *FindTagItemPPC_(struct Library *, ULONG, struct TagItem *) = -450;
  141.         ULONG GetTagDataPPC_(struct Library *, ULONG, ULONG, struct TagItem *) = -456;
  142.         struct TagItem *NextTagItemPPC_(struct Library *, struct TagItem **) = -462;
  143.         
  144.         // *** hardware
  145.         VOID ChangeMMU_(struct Library *, ULONG) = -588;
  146.         VOID GetInfo_(struct Library *, struct TagItem *) = -594;
  147.         VOID SetCache_(struct Library *, ULONG, APTR, ULONG) = -510;
  148.         ULONG SetHardware_(struct Library *, ULONG, APTR) = -540;
  149.         
  150.         // *** exceptions
  151.         VOID ModifyFPExc_(struct Library *, ULONG) = -546;
  152.         VOID RemExcHandler_(struct Library *, APTR) = -522;
  153.         APTR SetExcHandler_(struct Library *, struct TagItem *) = -516;
  154. //      APTR SetExcHandlerTags_(struct Library *, Tag tag1, ...) = -516;
  155.         
  156.         // *** supervisor
  157.         ULONG Super_(struct Library *) = -528;
  158.         VOID User_(struct Library *, ULONG) = -534;
  159.         
  160.         // *** 68K connection
  161.         VOID Signal68K_(struct Library *, struct Task *, ULONG) = -504;
  162.         
  163. #endif // POWERPCLIB_V7
  164. };
  165.  
  166. __inline ULONG Run68K(struct PPCArgs *a1) 
  167.         extern struct Library *PowerPCBase;
  168.         return Run68K_(PowerPCBase,a1); 
  169. }
  170. __inline ULONG WaitFor68K(struct PPCArgs *a1)
  171. {
  172.         extern struct Library *PowerPCBase;
  173.         return WaitFor68K_(PowerPCBase,a1);
  174. }
  175. __inline VOID SPrintF(STRPTR a1, APTR a2)
  176. {
  177.         extern struct Library *PowerPCBase;
  178.         SPrintF_(PowerPCBase,a1,a2);
  179. }
  180. __inline APTR AllocVecPPC(ULONG a1, ULONG a2, ULONG a3)
  181. {
  182.         extern struct Library *PowerPCBase;
  183.         return AllocVecPPC_(PowerPCBase,a1,a2,a3);
  184. }
  185. __inline VOID GetSysTimePPC(struct timeval *a1)
  186. {
  187.         extern struct Library *PowerPCBase;
  188.         return GetSysTimePPC_(PowerPCBase,a1);
  189. }
  190.  
  191. __inline VOID AddTimePPC(struct timeval *a1, struct timeval *a2)
  192. {
  193.         extern struct Library *PowerPCBase;
  194.         return AddTimePPC_(PowerPCBase,a1,a2);
  195. }
  196.  
  197. __inline VOID SubTimePPC(struct timeval *a1, struct timeval *a2)
  198. {
  199.         extern struct Library *PowerPCBase;
  200.         return SubTimePPC_(PowerPCBase,a1,a2);
  201. }
  202.  
  203. __inline LONG CmpTimePPC(struct timeval *a1, struct timeval *a2)
  204. {
  205.         extern struct Library *PowerPCBase;
  206.         return CmpTimePPC_(PowerPCBase,a1,a2);
  207. }
  208.  
  209. __inline VOID FreeVecPPC(APTR a1)
  210. {
  211.         extern struct Library *PowerPCBase;
  212.         return FreeVecPPC_(PowerPCBase,a1);
  213. }
  214.  
  215. #ifndef POWERPCLIB_V7
  216. __inline VOID FreeAllMem()
  217. {
  218.         extern struct Library *PowerPCBase;
  219.         FreeAllMem_(PowerPCBase)
  220. }
  221. __inline VOID CopyMemPPC(APTR a1, APTR a2, ULONG a3)
  222. {
  223.         extern struct Library *PowerPCBase;
  224.         CopyMemPPC_(PowerPCBase,a1,a2,a3)
  225. }
  226. __inline VOID AddHeadPPC(struct List *a1, struct Node *a2)
  227. {
  228.         extern struct Library *PowerPCBase;
  229.         AddHeadPPC_(PowerPCBase,a1,a2);
  230. }
  231. __inline VOID AddTailPPC(struct List *a1, struct Node *a2)
  232. {
  233.         extern struct Library *PowerPCBase;
  234.         AddTailPPC_(PowerPCBase,a1,a2);
  235. }
  236. __inline VOID EnqueuePPC(struct List *a1, struct Node *a2)
  237. {
  238.         extern struct Library *PowerPCBase;
  239.         EnqueuePPC_(PowerPCBase,a1,a2);
  240. }
  241. __inline struct Node *FindNamePPC(struct List *a1, STRPTR a2)
  242. {
  243.         extern struct Library *PowerPCBase;
  244.         return FindNamePPC_(PowerPCBase,a1,a2);
  245. }
  246. __inline VOID InsertPPC(struct Node *a1, struct Node *a2)
  247. {
  248.         extern struct Library *PowerPCBase;
  249.         InsertPPC_(PowerPCBase,a1,a2);
  250. }
  251. __inline struct Node *RemHeadPPC(struct List *a1)
  252. {
  253.         extern struct Library *PowerPCBase;
  254.         return RemHeadPPC_(PowerPCBase,a1);
  255. }
  256. __inline VOID RemovePPC(struct Node *a1)
  257. {
  258.         extern struct Library *PowerPCBase;
  259.         RemovePPC_(PowerPCBase,a1);
  260. }
  261. __inline struct Node *RemTailPPC(struct Node *a1)
  262. {
  263.         extern struct Library *PowerPCBase;
  264.         return RemTailPPC_(PowerPCBase,a1);
  265. }
  266. __inline VOID AddSemaphorePPC(struct SignalSemaphorePPC *a1)
  267. {
  268.         extern struct Library *PowerPCBase;
  269.         AddSemaphorePPC_(PowerPCBase,a1);
  270. }
  271. __inline LONG AttemptSemaphorePPC(struct SignalSemaphorePPC *a1)
  272. {
  273.         extern struct Library *PowerPCBase;
  274.         return AttemptSemaphorePPC_(PowerPCBase,a1);
  275. }
  276. __inline struct SignalSemaphorePPC *FindSemaphorePPC(STRPTR a1)
  277. {
  278.         extern struct Library *PowerPCBase;
  279.         return FindSemaphorePPC_(PowerPCBase,a1);
  280. }
  281. __inline VOID FreeSemaphorePPC(struct SignalSemaphorePPC *a1)
  282. {
  283.         extern struct Library *PowerPCBase;
  284.         FreeSemaphorePPC_(PowerPCBase,a1);
  285. }
  286. __inline LONG InitSemaphorePPC(struct SignalSemaphorePPC *a1)
  287. {
  288.         extern struct Library *PowerPCBase;
  289.         return InitSemaphorePPC_(PowerPCBase,a1);
  290. }
  291. __inline VOID ObtainSemaphorePPC(struct SignalSemaphorePPC *a1)
  292. {
  293.         extern struct Library *PowerPCBase;
  294.         ObtainSemaphorePPC_(PowerPCBase,a1);
  295. }
  296. __inline VOID ReleaseSemaphorePPC(struct SignalSemaphorePPC *a1)
  297. {
  298.         extern struct Library *PowerPCBase;
  299.         ReleaseSemaphorePPC_(PowerPCBase,a1);
  300. }
  301. __inline VOID RemSemaphorePPC(struct SignalSemaphorePPC *a1)
  302. {
  303.         extern struct Library *PowerPCBase;
  304.         RemSemaphorePPC_(PowerPCBase,a1);
  305. }
  306. __inline LONG AllocSignalPPC(LONG a1)
  307. {
  308.         extern struct Library *PowerPCBase;
  309.         return AllocSignalPPC_(PowerPCBase,a1);
  310. }
  311. __inline VOID FreeSignalPPC(LONG a1)
  312. {
  313.         extern struct Library *PowerPCBase;
  314.         FreeSignalPPC_(PowerPCBase,a1);
  315. }
  316. __inline ULONG SetSignalPPC(ULONG a1, ULONG a2)
  317. {
  318.         extern struct Library *PowerPCBase;
  319.         return SetSignalPPC_(PowerPCBase,a1,a2);
  320. }
  321. __inline VOID SignalPPC(struct TaskPPC *a1, ULONG a2)
  322. {
  323.         extern struct Library *PowerPCBase;
  324.         SignalPPC_(PowerPCBase,a1,a2);
  325. }
  326. __inline ULONG WaitPPC(ULONG a1)
  327. {
  328.         extern struct Library *PowerPCBase;
  329.         return WaitPPC_(PowerPCBase,a1);
  330. }
  331. __inline ULONG WaitTime(ULONG a1, ULONG a2)
  332. {
  333.         extern struct Library *PowerPCBase;
  334.         return WaitTime_(PowerPCBase,a1,a2);
  335. }
  336. __inline struct TaskPPC *CreateTaskPPC(struct TagItem *a1)
  337. {
  338.         extern struct Library *PowerPCBase;
  339.         return CreateTaskPPC_(PowerPCBase,a1);
  340. }
  341. __inline struct TaskPPC *CreateTaskPPCTags(Tag tag1, ...)
  342. {
  343.         extern struct Library *PowerPCBase;
  344.         return CreateTaskPPC_(PowerPCBase,(struct TagItem *) &tag1);
  345. }
  346. __inline VOID DeleteTaskPPC(struct TaskPPC *a1)
  347. {
  348.         extern struct Library *PowerPCBase;
  349.         DeleteTaskPPC_(PowerPCBase,a1);
  350. }
  351. __inline struct TaskPPC *FindTaskPPC(STRPTR a1)
  352. {
  353.         extern struct Library *PowerPCBase;
  354.         return FindTaskPPC_(PowerPCBase,a1);
  355. }
  356. __inline struct TaskPtr *LockTaskList()
  357. {
  358.         extern struct Library *PowerPCBase;
  359.         return LockTaskList_(PowerPCBase);
  360. }
  361. __inline LONG SetTaskPriPPC(struct TaskPPC *a1, LONG a2)
  362. {
  363.         extern struct Library *PowerPCBase;
  364.         return SetTaskPriPPC_(PowerPCBase,a1,a2);
  365. }
  366. __inline VOID UnLockTaskList()
  367. {
  368.         extern struct Library *PowerPCBase;
  369.         UnLockTaskList_(PowerPCBase);
  370. }
  371. __inline VOID AddPortPPC(struct MsgPortPPC *a1)
  372. {
  373.         extern struct Library *PowerPCBase;
  374.         AddPortPPC_(PowerPCBase,a1);
  375. }
  376. __inline struct MsgPortPPC *CreateMsgPortPPC()
  377. {
  378.         extern struct Library *PowerPCBase;
  379.         return CreateMsgPortPPC_(PowerPCBase);
  380. }
  381. __inline VOID DeleteMsgPortPPC(struct MsgPortPPC *a1)
  382. {
  383.         extern struct Library *PowerPCBase;
  384.         DeleteMsgPortPPC_(PowerPCBase,a1);
  385. }
  386. __inline struct MsgPortPPC *FindPortPPC(STRPTR a1)
  387. {
  388.         extern struct Library *PowerPCBase;
  389.         return FindPortPPC_(PowerPCBase,a1);
  390. }
  391. __inline struct Message *GetMsgPPC(struct MsgPortPPC *a1)
  392. {
  393.         extern struct Library *PowerPCBase;
  394.         return GetMsgPPC_(PowerPCBase,a1);
  395. }
  396. __inline VOID PutMsgPPC(struct MsgPortPPC *a1, struct Message *a2)
  397. {
  398.         extern struct Library *PowerPCBase;
  399.         PutMsgPPC_(PowerPCBase,a1,a2);
  400. }
  401. __inline VOID RemPortPPC(struct MsgPortPPC *a1)
  402. {
  403.         extern struct Library *PowerPCBase;
  404.         RemPortPPC_(PowerPCBase,a1);
  405. }
  406. __inline VOID ReplyMsgPPC(struct Message *a1)
  407. {
  408.         extern struct Library *PowerPCBase;
  409.         ReplyMsgPPC_(PowerPCBase,a1);
  410. }
  411. __inline struct Message *AllocXMsgPPC(ULONG a1, struct MsgPortPPC *a2)
  412. {
  413.         extern struct Library *PowerPCBase;
  414.         AllocXMsgPPC_(PowerPCBase,a1,a2);
  415. }
  416. __inline VOID FreeXMsgPPC(struct Message *a1)
  417. {
  418.         extern struct Library *PowerPCBase;
  419.         FreeXMsgPPC_(PowerPCBase,a1);
  420. }
  421. __inline VOID PutXMsgPPC(struct MsgPort *a1, struct Message *a2)
  422. {
  423.         extern struct Library *PowerPCBase;
  424.         PutXMsgPPC_(PowerPCBase,a1,a2);
  425. }
  426. __inline struct TagItem *FindTagItemPPC(ULONG a1, struct TagItem *a2)
  427. {
  428.         extern struct Library *PowerPCBase;
  429.         return FindTagItemPPC_(PowerPCBase,a1,a2);
  430. }
  431. __inline ULONG GetTagDataPPC(ULONG a1, ULONG a2, struct TagItem *a3)
  432. {
  433.         extern struct Library *PowerPCBase;
  434.         return GetTagDataPPC_(PowerPCBase,a1,a2,a3);
  435. }
  436. __inline struct TagItem *NextTagItemPPC(struct TagItem **a1)
  437. {
  438.         extern struct Library *PowerPCBase;
  439.         return NextTagItemPPC_(PowerPCBase,a1);
  440. }
  441. __inline VOID ChangeMMU(ULONG a1)
  442. {
  443.         extern struct Library *PowerPCBase;
  444.         ChangeMMU_(PowerPCBase,a1);
  445. }
  446. __inline VOID GetInfo(struct TagItem *a1)
  447. {
  448.         extern struct Library *PowerPCBase;
  449.         GetInfo_(PowerPCBase,a1);
  450. }
  451. __inline VOID SetCache(ULONG a1, APTR a2, ULONG a3)
  452. {
  453.         extern struct Library *PowerPCBase;
  454.         SetCache_(PowerPCBase,a1,a2,a3);
  455. }
  456. __inline ULONG SetHardware(ULONG a1, APTR a2)
  457. {
  458.         extern struct Library *PowerPCBase;
  459.         return SetHardware_(PowerPCBase,a1,a2);
  460. }
  461. __inline VOID ModifyFPExc(ULONG a1)
  462. {
  463.         extern struct Library *PowerPCBase;
  464.         ModifyFPExc_(PowerPCBase,a1);
  465. }
  466. __inline VOID RemExcHandler(APTR a1)
  467. {
  468.         extern struct Library *PowerPCBase;
  469.         RemExcHandler_(PowerPCBase,a1);
  470. }
  471. __inline APTR SetExcHandler(struct TagItem *a1)
  472. {
  473.         extern struct Library *PowerPCBase;
  474.         return SetExcHandler_(PowerPCBase,a1);
  475. }
  476. __inline APTR SetExcHandlerTags(Tag tag1, ...)
  477. {
  478.         extern struct Library *PowerPCBase;
  479.         return SetExcHandler_(PowerPCBase,(struct TagItem *) &tag1);
  480. }
  481. __inline ULONG Super()
  482. {
  483.         extern struct Library *PowerPCBase;
  484.         return Super_(PowerPCBase);
  485. }
  486. __inline VOID User(ULONG a1)
  487. {
  488.         extern struct Library *PowerPCBase;
  489.         User_(PowerPCBase,a1);
  490. }
  491. __inline VOID Signal68K(struct Task *a1, ULONG a2)
  492. {
  493.         extern struct Library *PowerPCBase;
  494.         Signal68K_(PowerPCBase,a1,a2);
  495. }
  496. #endif // POWERPCLIB_V7
  497. #endif // __PPC__
  498.  
  499. #ifdef STORMPRAGMAS
  500. #ifndef _INCLUDE_PRAGMA_POWERPC_LIB_H
  501. #include <pragma/powerpc_lib.h>
  502. #endif
  503. #endif
  504.  
  505. #endif /* CLIB_POWERPC_PROTOS_H */
  506.